home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
vol_400
/
403_01
/
matrix.h
< prev
next >
Wrap
Text File
|
1992-05-23
|
3KB
|
129 lines
/*
*-----------------------------------------------------------------------------
* file: matrix.h
* desc: matrix mathematics header file
* by: ko shu pui, patrick
* date: 24 nov 91 v0.1b
* revi:
* ref:
* [1] Mary L.Boas, "Mathematical Methods in the Physical Sciene,"
* John Wiley & Sons, 2nd Ed., 1983. Chap 3.
*
*-----------------------------------------------------------------------------
*/
/*
*-----------------------------------------------------------------------------
* internal matrix structure
*-----------------------------------------------------------------------------
*/
typedef struct {
int row;
int col;
} MATHEAD;
typedef struct {
MATHEAD head;
/*
* only the starting address of the following will be
* returned to the C programmer, like malloc() concept
*/
double *matrix;
} MATBODY;
typedef double **MATRIX;
#define Mathead(a) ((MATHEAD *)((MATHEAD *)(a) - 1))
#define MatRow(a) (Mathead(a)->row)
#define MatCol(a) (Mathead(a)->col)
/*
*----------------------------------------------------------------------------
* mat_errors definitions
*----------------------------------------------------------------------------
*/
#define MAT_MALLOC 1
#define MAT_FNOTOPEN 2
#define MAT_FNOTGETMAT 3
/*
*----------------------------------------------------------------------------
* matrice types
*----------------------------------------------------------------------------
*/
#define UNDEFINED -1
#define ZERO_MATRIX 0
#define UNIT_MATRIX 1
/* prototypes of matrix package */
#ifdef __TURBOC__
MATRIX mat_error (int);
MATRIX _mat_creat (int, int);
MATRIX mat_creat (int, int, int);
MATRIX mat_fill (MATRIX, int);
int mat_free (MATRIX);
MATRIX mat_copy (MATRIX);
MATRIX mat_colcopy1 (MATRIX, MATRIX, int, int);
int fgetmat (MATRIX, FILE *);
MATRIX mat_dump (MATRIX);
MATRIX mat_dumpf (MATRIX, char *);
MATRIX mat_fdump (MATRIX, FILE *);
MATRIX mat_fdumpf (MATRIX, char *, FILE *);
MATRIX mat_add (MATRIX, MATRIX);
MATRIX mat_sub (MATRIX, MATRIX);
MATRIX mat_mul (MATRIX, MATRIX);
double mat_diagmul (MATRIX);
MATRIX mat_tran (MATRIX);
MATRIX mat_inv (MATRIX);
MATRIX mat_SymToeplz (MATRIX);
int mat_lu (MATRIX, MATRIX);
MATRIX mat_backsubs1 (MATRIX, MATRIX, MATRIX, MATRIX, int);
MATRIX mat_lsolve (MATRIX, MATRIX);
MATRIX mat_submat (MATRIX, int, int);
double mat_cofact (MATRIX, int, int);
double mat_det (MATRIX);
double mat_minor (MATRIX, int, int);
MATRIX mat_durbin (MATRIX);
MATRIX mat_lsolve_durbin(MATRIX, MATRIX);
#else
MATRIX mat_error ();
MATRIX _mat_creat ();
MATRIX mat_creat ();
MATRIX mat_fill ();
int mat_free ();
MATRIX mat_copy ();
MATRIX mat_colcopy1 ();
int fgetmat ();
MATRIX mat_dumpf ();
MATRIX mat_dump ();
MATRIX mat_fdump ();
MATRIX mat_add ();
MATRIX mat_sub ();
MATRIX mat_mul ();
double mat_diagmul ();
MATRIX mat_tran ();
MATRIX mat_inv ();
MATRIX mat_SymToeplz ();
int mat_lu ();
MATRIX mat_backsubs1 ();
MATRIX mat_lsolve ();
MATRIX mat_submat ();
double mat_cofact ();
double mat_det ();
double mat_minor ();
MATRIX mat_durbin ();
MATRIX mat_lsolve_durbin();
#endif